home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / data / fapx / fapxdnld.plp < prev    next >
Text File  |  1994-11-16  |  11KB  |  411 lines

  1. /************************************************************************
  2. *    自動ダウンロード処理                        *
  3. *************************************************************************/
  4. /*    ダウンロード制御ファイル指定の有無の判定処理    */
  5. %AUTODNLD{
  6.     case    (@filechk(UP2|{fapxdown.ctl}),
  7.         {Yes},
  8.         {
  9.         display({自動ダウンロードを開始します\n});
  10.         footnote({自動ダウンロードをしています});
  11.         AUTOdown(UP2|{fapxdown.ctl});
  12.         dispoff(!DEBUG);
  13.         command({copy }|UP2|{fapxdown.ctl }|UP2|{fapxdown.bak});
  14.         delfile(UP2|{fapxdown.ctl});
  15.         case    (@filechk(UP2|{fapxdown.rsv}),
  16.             {Yes},
  17.             {
  18.             copyfile(UP2|{fapxdown.rsv},UP2|{fapxdown.ctl});
  19.             delfile(UP2|{fapxdown.rsv})
  20.             });
  21.         dispoff({No});
  22.         });
  23.     };
  24.  
  25. %AUTOdown{
  26.     [file]
  27.     case    (@filechk(file),
  28.         {Yes},
  29.         {
  30.         line:=0;
  31.         loop    ({
  32.             line:=line+1;
  33.             linebuf:={};
  34.             linebuf:=@read(file,line,1);
  35.             case    (@getchar(linebuf,1,5),
  36.                 {保留;},
  37.                 {write(UP2|{fapxdown.rsv},linebuf);im({Yes})},
  38.                 {割引;},
  39.                 {
  40.                 case    (@discntime(@daylong),
  41.                     {Yes},
  42.                     {linebuf:=@getchar(linebuf,6);AUTOdwn1},
  43.                     {No},
  44.                     {write(UP2|{fapxdown.rsv},linebuf);
  45.                     im({Yes})}
  46.                     );
  47.                 },
  48.                 ,
  49.                 {AUTOdwn1}
  50.                 );
  51.             });
  52.         AUTOdwn1;
  53.         },
  54.         {No},
  55.         {
  56.         SNDMSG({okasi_f.snd});
  57.         display({\n}|file|{制御ファイルがありません\n});
  58.         });
  59.     };
  60.  
  61. /*     ダウンロード元の振り分け    */
  62. %AUTOdwn1{
  63.     case    (@head(linebuf,{=}),
  64.         {forum},    /* フォーラムからのダウンロード */
  65.         {
  66.         DLIBDOWN(@tail(linebuf,{forum=},{;}),
  67.              @tail(linebuf,{libno=},{;}),
  68.              @tail(linebuf,{datano=},{;}),
  69.              @tail(linebuf,{docfile=},{;}),
  70.              @tail(linebuf,{datafile=},{;}));
  71.         im({Yes});    /* 終わったら次の行を読む */
  72.         },
  73.         {profile},    /* プロフィール情報のダウンロード */
  74.         {
  75.         PROFDOWN(@tail(linebuf,{profile=},{;}));
  76.         im({Yes});    /* 終わったら次の行を読む */
  77.         },
  78.         {liblistall},    /* 指定DLリストのダウンロード */
  79.         {
  80.         DLLSTALL(@tail(linebuf,{forum=},{;}),
  81.              @tail(linebuf,{lib=},{;}),
  82.              @tail(linebuf,{line=},{;}));
  83.         im({Yes});    /* 終わったら次の行を読む */
  84.         },
  85.         {myforum},    /* MYFORUM.LOG 更新 */
  86.         {
  87.         MFRMDOWN;
  88.         im({Yes});    /* 終わったら次の行を読む */
  89.         },
  90.         {},{im({No})},    /* 空文字列なら終了 */
  91.         ,{im({Yes})}    /* それ以外なら次の行を読む */
  92.         );
  93.     };
  94.  
  95. /************************************************************************
  96. *    フォーラムのデータライブラリからダウンする            *
  97. *************************************************************************/
  98. %DLIBDOWN{
  99.     [forum,libno,datano,docfile,datafile]
  100.     case    (forum={}||libno={}||datano={}||docfile={},
  101.         {Yes},
  102.         {
  103.         SNDMSG({okasi_f.snd});
  104.         display({ダウンロード制御データが不足しているため}|
  105.             {処理をスキップします\n});
  106.         write(UP2|{fapxdown.rsv},{保留;}|linebuf);
  107.         },
  108.         {No},
  109.         {
  110.         display(forum|{の}|libno|{番ライブラリの}|
  111.             datano|{番をダウンロードします\n});
  112.         footnote(forum|{の}|libno|{番ライブラリの}|
  113.             datano|{番をダウンロードします});
  114.         case    (@GO({forum/}|forum|{/lib/}|libno),
  115.             {Yes},{LIBDOWN(datano,docfile,datafile)},
  116.             {No},{write(UP2|{fapxdown.rsv},{保留;}|linebuf)}
  117.             );
  118.         });
  119.     };
  120.  
  121. %LIBDOWN{
  122.     [datano,docfile,datafile]
  123.     type({DOWN }|datano|{ PROT:BPL\n});
  124.     mkdir2(@body(docfile,,{\}));
  125.     delfile(docfile);
  126.     write(docfile,{FORUM:}|forum|{ LIB:}|libno|{ #}|datano|{\n});
  127.     receive(docfile);
  128.     wait    (Wtime2*5,{AbortOff({\nホストの反応が鈍いよぉ~\n})},
  129.         {項目 (1:OK  2:NG  E:終了)\n:},
  130.         {
  131.         stoprec;
  132.         case    (datafile={},
  133.             {Yes},{type({2\n});WAITABORT(Wtime2)},
  134.             {No},
  135.             {
  136.             type({1\n});
  137.             WAITCHAR(Wtime2,{ファイル名 (改行のみで終了)\n:},{});
  138.             %Gfsize    @getline(@laststr(64),2,1);
  139.             /*display(Gfsize|{\n});*/
  140.             %Fsize @head(Gfsize,{バ});
  141.             mkdir2(@body(datafile,,{\}));
  142.             case    (@filechk(datafile),
  143.                 {Yes},
  144.                 {
  145.                 display({\nデータファイルと同名の}|
  146.                     {ファイルがあります\n});
  147.                 display({古いファイルを*.BAKに改名します\n});
  148.                 dispoff(!DEBUG);
  149.                 command({copy }|datafile|{ *.bak});
  150.                 delfile(datafile);
  151.                 dispoff({No});
  152.                 });
  153.             footnote(forum|{の}|libno|{番ライブラリの}|datano|
  154.                 {番をダウンロードします}|
  155.                 {(★中止 PUSH:[Cancel]→[No])});
  156.             %timeP    @linetime;
  157.             type(datafile);type({\n});
  158.             wait    (,,
  159.                 {4:ダウンロード  E:終了)\n>},
  160.                 {
  161.                 %timePS    @linetime-timeP;
  162.                 UPDNRATE({down},datafile,Fsize,timePS);
  163.                 SNDMSG({owata_f.snd});
  164.                 },
  165.                 {◆アボートリクエスト◆},
  166.                 {
  167.                 display({\nダウンロードが中断されました\n}|
  168.                     {ダウンロード途中の概要/データ}|
  169.                     {ファイルを消去します(i◇i)\n});
  170.                 SNDMSG({owata_f.snd});
  171.                 WAITCHAR(Wtime2,{4:ダウンロード  E:終了)\n>},{});
  172.                 delfile(docfile);
  173.                 delfile(datafile);
  174.                 write(UP2|{fapxdown.rsv},{保留;}|linebuf);
  175.                 });
  176.             });
  177.         },
  178.         {-該当するデータはありません-\n},
  179.         {
  180.         stoprec;
  181.         WAITCHAR(Wtime2,{4:ダウンロード  E:終了)\n>},{});
  182.         display({データ番号が違うため次の処理を行います\n});
  183.         SNDMSG({okasi_f.snd});
  184.         write(UP2|{fapxdown.rsv},{保留;}|linebuf);
  185.         });
  186.     };
  187.  
  188. /************************************************************************
  189. *    プロフィール情報をダウンする                    *
  190. *************************************************************************/
  191. %PROFDOWN{
  192.     [uid]
  193.     %readall{
  194.         wait    (Wtime2*3,{AbortOff({ホストがおもいよ~})},
  195.             {◆該当利用者はいません◆\n>},{SNDMSG({okasi_f.snd})},
  196.             {◆入力データエラー◆\n>},{SNDMSG({okasi_f.snd})},
  197.             {プロフィールはありません-\n>},,
  198.             {\n>},
  199.             {wait(2);case(@laststr(2),{>},,,readall)},
  200.             {\nHP>},
  201.             {wait(2);case(@laststr(3),{HP>},,,readall)}
  202.             );
  203.         };
  204.     display(uid|{の}|{プロフィール情報をダウンロードします\n});
  205.     footnote(uid|{の}|{プロフィール情報をダウンロードします});
  206.     case(CUGFLAG,{Yes},{dispoff(!DEBUG);GONIF;dispoff({No})});
  207.     case(Where,{prof},,,
  208.         {type({GO PROFILE\n});WAITABORT(Wtime2);Where:={prof}});
  209.     case    (uid={},
  210.         {Yes},
  211.         {
  212.         SNDMSG({okasi_f.snd});
  213.         display({ダウンロード制御データが不足しているため}|
  214.             {処理をスキップします\n});
  215.         write(UP2|{fapxdown.rsv},{保留;}|linebuf);
  216.         },
  217.         {No},
  218.         {
  219.         var    UID    [90];
  220.         mkdir2(LOG2|{profile});
  221.         UID:=uid;
  222.         loop    ({
  223.             %id1 @head(UID,{,});
  224.             UID:=@body(UID,{,});
  225.             case    (@nochar(id1)==8,
  226.                 {Yes},
  227.                 {
  228.                 type({PROF }|id1|{\n});
  229.                 WAITCHAR(Wtime2,{PROF }|id1|{\n},
  230.                     {receive(TEMP2|{prof.tmp})});
  231.                 readall;stoprec;
  232.                 %prp    @read(TEMP2|{prof.tmp});
  233.                 %pft    @getline(prp,1,@noline(prp)-2);
  234.                 %idp    LOG2|{profile\}|id1|{.prf};
  235.                 %prh    {PROF:}|id1|{ *** };
  236.                 %hck    {Gotten by FAPX\n};
  237.                 case    (@filechk(idp),{Yes},
  238.                     {
  239.                     %idq @body(@tail(@read(idp),prh),hck);
  240.                     case    (pft,idq,,,
  241.                         {write(idp,CRLF|prh|@daylong|
  242.                         { *** ---------- }|hck|pft)
  243.                         });
  244.                     },
  245.                     {No},
  246.                     {write(idp,prh|@daylong|
  247.                         { *** ---------- }|hck|pft)
  248.                     });
  249.                 delfile(TEMP2|{prof.tmp});
  250.                 });
  251.             case(UID,{},{im({No})},,{im({Yes})});
  252.             });
  253.         });
  254.     };
  255.  
  256. /************************************************************************
  257. *    指定ライブラリーの全リストをダウンする処理                *
  258. *************************************************************************/
  259. %DLLSTALL{
  260.     [forum,lib,line]
  261.     display({指定ライブラリのリストをダウンロードします(~◇~)\n});
  262.     footnote({指定ライブラリのリストをダウンロードします});
  263.     case    (forum={}||lib={},
  264.         {Yes},
  265.         {
  266.         SNDMSG({okasi_f.snd});
  267.         display({ダウンロード制御データが不足しているため}|
  268.             {処理をスキップします\n});
  269.         write(UP2|{fapxdown.rsv},{保留;}|linebuf);
  270.         },
  271.         {No},{DLLSTAL1(forum,lib,line)}
  272.         );
  273.     };
  274.  
  275. %DLLSTAL1{
  276.     [forum,lib,line]
  277.     var    liblist    [55];
  278.     liblist:=lib;
  279.     delfile(TEMP2|{fapx.log});
  280.     Where:={};
  281.     DOWNSTART;
  282.     case(LOGmode={forum},{Yes},{LOGforum(forum,{start})});
  283.     case    (@GO({forum/}|forum),
  284.         {Yes},
  285.         {
  286.         case    (liblist={ALL}||liblist={all},
  287.             {Yes},
  288.             {
  289.             liblist:={};
  290.             type({LIB\n});
  291.             wait    (Wtime2,{AbortOff(
  292.                         {\nホストの反応が鈍いよぉ~\n})},
  293.                 {最新  ライブラリ名\n},{}
  294.                 );
  295.             loop    ({
  296.                 wait    (Wtime2,{AbortOff(
  297.                        {\nホストの反応が鈍いよぉ~\n})},
  298.                     {\n>},{im({No})},
  299.                     {\n},
  300.                     {
  301.                     %line1    @body(@laststr(80),{\n},{\n});
  302.                     case    (0<@getchar(line1,1,4)+1-1 &&
  303.                         @getchar(line1,1,4)+1-1<21,
  304.                         {Yes},
  305.                         {case(liblist={},
  306.                             {Yes},
  307.                             {
  308.                             liblist:=
  309.                                 @getchar(line1,1,4)
  310.                                 +1-1;
  311.                             },
  312.                             ,
  313.                             {liblist:=liblist|{,}|
  314.                                     @getchar(line1,1,4)
  315.                                 +1-1;
  316.                             });
  317.                         im({Yes});
  318.                         });
  319.                     });
  320.                 });
  321.             },
  322.             {No},
  323.             {
  324.             type({LIB\n});
  325.             wait    (Wtime2,{AbortOff(
  326.                         {\nホストの反応が鈍いよぉ~\n})},
  327.                 {\n>},{}
  328.                 );
  329.             });
  330.         case(DEBUG,{Yes},{display({\nliblist=}|liblist|{\n})});
  331.         case    (line={} || line={ALL} || line={all},
  332.             {No},
  333.             {case    (8<line+1-1 && line+1-1<100,
  334.                 {Yes},
  335.                 {
  336.                 type({SET PAGE ON\n});wait(,,{>});
  337.                 type({SET LINE }|line|{\n});wait(,,{>});
  338.                 },
  339.                 {No},
  340.                 {
  341.                 display({\n行数指定の数値が異常です(~_~メ) }|
  342.                     {以後はNIFTYのデフォルト値で行います\n});
  343.                 type({SET PAGE ON\n});wait(,,{>});
  344.                 });
  345.             });
  346.         loop    ({
  347.             %libno    @head(liblist,{,});
  348.             case    (libno,
  349.                 {},{im({No})},    /* ライブラリリスト終了 */
  350.                 ,
  351.                 {
  352.                 /*type({LIB }|libno);type({\n});*/
  353.                 footnote({LIB }|liblist|{のリストをダウンします }|
  354.                     { 現在:LIB }|libno);
  355.                 case(@GO({forum/}|forum|{/lib/}|libno),
  356.                     {Yes},
  357.                     {%a @laststr(128);
  358.                      %b @head(@body(a,{登録数 :}),{-\n});
  359.                      dispoff(!DEBUG);
  360.                      display({登録数:}|b|{\n});
  361.                      dispoff({No});
  362.                      case( b == 0,
  363.                         {No},
  364.                         {type({DIR\n});
  365.                          wait(,,{\n>},);
  366.                          type({E\n});
  367.                          WAITABORT(Wtime2)});
  368.                      im({Yes})},
  369.                     {No},    /* n番ライブラリなしの場合 */
  370.                     {im({Yes})}
  371.                     );
  372.                 });
  373.                 liblist:=@body(liblist,{,});
  374.             });
  375.         case    (LOGmode={forum},
  376.             {Yes},{LOGforum(forum,{stop})}
  377.             );
  378.         },
  379.         {No},
  380.         {
  381.         write(UP2|{fapxdown.rsv},{保留;}|linebuf);
  382.         case(LOGmode={forum},{Yes},{LOGforum(forum,{cancel})});
  383.         });
  384.     DOWNSTOP;
  385.     };
  386.  
  387. /************************************************************************
  388. *    MYFORUM.LOG を更新する処理                    *
  389. *************************************************************************/
  390. %MFRMDOWN{
  391.     display({MYFORUM.LOG を更新します\n});
  392.     footnote({MYFORUM.LOG を更新します});
  393.     delfile(LOG2|{myforum.log});
  394. /**/    case(CUGFLAG,{Yes},{dispoff(!DEBUG);GONIF;dispoff({No})});
  395.     receive(LOG2|{myforum.log});
  396.     type({MYFORUM\n});
  397.     wait(,,
  398.         {表示終了\n},{stoprec;WAITABORT(Wtime2)},
  399.         {ません  -\n},{stoprec;WAITABORT(Wtime2)});
  400.     };
  401.  
  402. /************************************************************************
  403. *    ダウンロードメイン処理                        *
  404. *************************************************************************/
  405. var    line    [3];
  406. var    linebuf    [258];
  407. var    mexpflg    [3];
  408. mexpflg:={No};
  409. AUTODNLD;
  410. Where:={};
  411.